export default {
  /**
   * 将字符串中数据转为数组
   * @param {*} str 
   */
  spliceStr(str) {
    if (str.trims()) {
      var arr = [];
      var strArr = str.split(',');
      for (var i in strArr) {
        arr.push(strArr[i]);
      }
      return arr;
    }
  },
  /**
   * 将一个数组分成几个同等长度的数组
   * @param {*} array 分割的原数组
   * @param {*} size 每个子数组的长度
   */
  sliceArray(array, size) {
    var result = [];
    for (var x = 0; x < Math.ceil(array.length / size); x++) {
      var start = x * size;
      var end = start + size;
      result.push(array.slice(start, end));
    }
    return result;
  },
  /**
   * 防抖，使用时注意不能使用箭头函数，例：changeRouter: tools.throttle(function (url) {// 要做的事}, 1000)
   * @param {*} fn 
   * @param {*} gapTime 
   */
  throttle(fn, gapTime) {
    if (gapTime == null || gapTime == undefined) {
      gapTime = 1500
    }

    let _lastTime = null

    // 返回新的函数
    return function () {
      let _nowTime = +new Date()
      if (_nowTime - _lastTime > gapTime || !_lastTime) {
          fn.apply(this, arguments) //将this和参数传给原函数
          _lastTime = _nowTime
      }
    }
  },
  /**
   * 合并数据，将重复的项去掉，返回不重复的
   * @param {*} arr 原数组
   * @param {*} disArr 目标数组
   * @returns 
   */
  reduceArr(arr,disArr){
    // 数组去重，去掉已经选中的
    var result = arr.filter(function(coupon) {
      return disArr.every(function(item) {
        return item.id !== coupon.id
      })
    })
    return disArr.concat(result)
  }
}
